Paraskinio = {
	opener: window.opener ? window.opener : window.self,

	timer: null,

	delay: 260,
};

// Με την μέθοδο "anionta" αλλάζουμε το παρασκήνιο σε όλα τα παράθυρα
// που σχετίζονται ως προπάτορες με το παράθυρο αλλαγής παρασκηνίου.
// Αν δοθεί και δεύτερη παράμετρος (true) ενημερώνονται και οι session
// τιμές παρασκηνίου των προπατόρων.

Paraskinio.anionta = function(img, session) {
	for (var w = window; w; w = w.opener) {
		$(w.document.body).paraskinio(img);
		if (session) w.Client.session.paraskinio = img;
		if (w.hasOwnProperty('Prefadoros') &&
			w.Prefadoros.hasOwnProperty('cpanel') &&
			w.Prefadoros.cpanel.hasOwnProperty('flags') &&
			w.Prefadoros.cpanel.flags.hasOwnProperty('funchat') &&
			w.Prefadoros.cpanel.flags.funchat)
			$(w.Prefadoros.cpanel.flags.funchat.document.body).paraskinio(img);
	}
}

// Η μέθοδος "protasi" εκτελείται κάθε φορά που βάζουμε τον κέρσορα σε
// κάποιο background pattern της παλέτας επιλογής. Στόχος είναι να
// μας δείξει το προς επιλογήν background σε όλα τα σχετικά παράθυρα
// και να θέσει πλαίδιο υποψηφίου γύρω από το pattern.

Paraskinio.protasi = function(img, x) {
	if (Paraskinio.timer) clearTimeout(Paraskinio.timer);
	Paraskinio.timer = setTimeout(function() {
		//$(img).parent().attr({class: 'paraskinio_container paraskinio_protasi'});
		$(img).parent().addClass('paraskinio_protasi');
		Paraskinio.anionta(x);
	}, Paraskinio.delay);
}

// Η μέθοδος "afesi" εκτελείται καθώς κινούμε τον κέρσορα εκτός κάποιου
// background pattern της παλέτας επιλογής και επιτελεί ακριβώς την
// αντίθετη διαδικασία από την μέθοδο "protasi".

Paraskinio.afesi = function(img) {
	setTimeout(function() {
		$(img).parent().removeClass('paraskinio_protasi');
	}, Paraskinio.delay);
	if (Paraskinio.timer) clearTimeout(Paraskinio.timer);
	Paraskinio.timer = setTimeout(function() {
		var x = Paraskinio.opener.Client.session.paraskinio;
		Paraskinio.anionta(x);
	}, Paraskinio.delay);
}

// Η μέθοδος "image" δέχεται ένα background pattern image element και
// αποσπά το όνομα του file της σχετικής εικόνας.

Paraskinio.image = function(img) {
	var x = img.getAttribute('src').split('/');
	return x[x.length - 1];
}

Paraskinio.perigramata = function(neo) {
	$('.paraskinio_container > img').each(function() {
		var x = Paraskinio.image(this);
		if (x == Paraskinio.trexon) {
			if (neo) $(this).parent().attr('class', 'paraskinio_container paraskinio_proigoumeno');
			else $(this).parent().attr('class', 'paraskinio_container paraskinio_trexon');
		}
		else if (x == neo) $(this).parent().attr('class', 'paraskinio_container paraskinio_trexon');
		else $(this).parent().attr('class', 'paraskinio_container');
	});
}

Paraskinio.epilogi = function(img) {
	var neo = Paraskinio.image(img);
	Paraskinio.perigramata(neo);
	Paraskinio.trexon = neo;
	Paraskinio.anionta(neo, true);

	// Η αλλαγή παρασκηνίου δεν απαιτεί ενημέρωση για εφαρμογή. Ενημερώνεται άμεσα
	// η παράμετρος στην database και εφόσον η ενημέρωση είναι επιτυχής, ενημερώνεται
	// και το σκηνικό στον server.

	Client.node('setPeparam', 'param=' + Prefadoros.peparamEco('ΠΑΡΑΣΚΗΝΙΟ').uri(),
		'timi=' + neo.uri(), function(rsp) {
		if (rsp) Paraskinio.opener.Client.fyi.epano(rsp);
		else Paraskinio.telos();
	});
}

Paraskinio.telos = function() {
	Client.setCookie('paraskinio', Paraskinio.trexon);
	if (Paraskinio.opener == window.self) return;

	Paraskinio.anionta(Paraskinio.opener.Client.session.paraskinio);
	Paraskinio.opener.Client.paraskinioWindow = null;
	Paraskinio.opener.$('#' + Paraskinio.parentIconId).removeClass('iconButtonIpodixi');
	window.close();
}

$(document).ready(function() {
	$('body').css({width: 'auto'});
	Paraskinio.trexon = Client.session.paraskinio;
	Paraskinio.perigramata();
	$(window).on('unload', function() { Paraskinio.telos(); });
});
